package com.hclc.util.poi;

import java.math.BigDecimal;
import java.util.Optional;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @ClassName NumberUtil
 * @Author: yurj
 * @Mail：1638234804@qq.com
 * @Date: Create in 9:57 2019-11-8
 * @version: 1.0
 */
public class NumberUtil {

    private final static Pattern PATTERN = Pattern.compile("-?[0-9]+(\\.[0-9]+)?");

    /**
     * 匹配是否为数字
     *
     * @param str 可能为中文，也可能是-19162431.1254，不使用BigDecimal的话，变成-1.91624311254E7
     * @return
     * @author yutao
     * @date 2016年11月14日下午7:41:22
     */
    public static boolean isNumeric(String str) {
        // 该正则表达式可以匹配所有的数字 包括负数
        String bigStr;
        try {
            bigStr = new BigDecimal(str).toString();
        } catch (Exception e) {
            return false;//异常 说明包含非数字。
        }

        Matcher isNum = PATTERN.matcher(bigStr); // matcher是全匹配
        if (!isNum.matches()) {
            return false;
        }
        return true;
    }
//
//    private String getValue(Cell hssfCell) {
//        if (hssfCell.getCellType() == hssfCell.CELL_TYPE_BOOLEAN) {
//            // 返回布尔类型的值
//            return String.valueOf(hssfCell.getBooleanCellValue());
//        } else if (hssfCell.getCellType() == hssfCell.CELL_TYPE_NUMERIC) {
//            // 返回数值类型的值
//            Object inputValue = null;// 单元格值
//            Long longVal = Math.round(hssfCell.getNumericCellValue());
//            Double doubleVal = hssfCell.getNumericCellValue();
//            if (Double.parseDouble(longVal + ".0") == doubleVal) {   //判断是否含有小数位.0
//                inputValue = longVal;
//            } else {
//                inputValue = doubleVal;
//            }
//            DecimalFormat df = new DecimalFormat("#.####");    //格式化为四位小数，按自己需求选择；
//            return String.valueOf(df.format(inputValue));      //返回String类型
//        } else {
//            // 返回字符串类型的值
//            return String.valueOf(hssfCell.getStringCellValue());
//        }
//    }


    /**
     * 计算a与b之间的百分比
     *
     * @param diliverNum
     * @param queryMailNum
     * @return java.lang.Integer
     * @author yurj
     * @mail 1638234804@qq.com
     * @version 1.0
     * @date 2019-11-14 9:07
     */

    public static double percentage(double diliverNum, double queryMailNum, int scale) {
        if (diliverNum == 0 && queryMailNum == 0) {
            return 0;
        }
        return cn.hutool.core.util.NumberUtil.div(diliverNum, queryMailNum, scale);
    }


    /**
     * @Author: hef
     * @Date: Create in 15:19 2020-02-02
     */

    public static double longToDouble(Long num) {
        return ((double) Optional.ofNullable(num).orElse(0L) / 100);
    }

    public static long doubleToLong(Double num) {
        return (long) (Optional.ofNullable(num).orElse(0D) * 100);
    }

    public static double intToDouble(Integer num) {
        return ((double) Optional.ofNullable(num).orElse(0) / 100);
    }

    public static int doubleToInt(Double num) {
        return (int) (Optional.ofNullable(num).orElse(0D) * 100);
    }

    /**
     * int add
     * @param a
	 * @param b
     * @return int
     * @author yurj
     * @mail 1638234804@qq.com
     * @version 1.0
     * @date 2020/8/21 17:56
     */
    public static int add(int a, int b) {
        return a + b;
    }

    public static void main(String[] args) {
        System.out.println("diliverNum和queryMailNum的百分比为:" + percentage(0, 0, 2) + "%");
    }
}

